package cc.rengu.igas.share.facade;

import cc.rengu.igas.share.facade.request.UpqcC2bAddDealRequest;
import cc.rengu.igas.share.facade.request.UpqcC2bTransNoticeRequest;
import cc.rengu.igas.share.facade.request.UpqcPayResultNoticeRequest;
import cc.rengu.igas.share.facade.request.UpqcQrCodeQueryRequest;
import cc.rengu.igas.share.facade.response.UpqcC2bAddDealResponse;
import cc.rengu.igas.share.facade.response.UpqcC2bTransNoticeResponse;
import cc.rengu.igas.share.facade.response.UpqcPayResultNoticeResponse;
import cc.rengu.igas.share.facade.response.UpqcQrCodeQueryResponse;
import cc.rengu.igas.share.facade.result.Result;

/**
 * 银联二维码业务统一处理服务
 * Created by wangcheng on 2021/9/29 13:47
 */
public interface UpqcUnifiedService {
    /**
     * 银联二维码被扫-附加处理
     *
     * @param request 请求信息
     * @return 附加处理结果
     * @throws Exception 异常
     */
    Result<UpqcC2bAddDealResponse> c2bAddDeal(UpqcC2bAddDealRequest request) throws Exception;

    /**
     * 银联二维码被扫-交易结果通知
     *
     * @param request 请求信息
     * @return 通知结果
     * @throws Exception 异常
     */
    Result<UpqcC2bTransNoticeResponse> cb2TransNotice(UpqcC2bTransNoticeRequest request) throws Exception;

    /**
     * 银联二维码主扫-交易结果通知
     *
     * @param request 请求信息
     * @return 通知结果
     * @throws Exception 异常
     */
    Result<UpqcPayResultNoticeResponse> payNotice(UpqcPayResultNoticeRequest request) throws Exception;

    /**
     * 银联二维码主扫-查询二维码
     *
     * @param request 请求信息
     * @return 查询结果
     * @throws Exception 异常
     */
    Result<UpqcQrCodeQueryResponse> qrCodeQuery(UpqcQrCodeQueryRequest request) throws Exception;
}
